package com.example.dml.singleton_pattern;

/**
 * @description:
 * 利用内部类实现的形式兼顾了饿汉式单例模式的内存浪费问题和synchronized的性能问题
 * 内部类一定是要在方法调用之前初始化，巧妙地避免了线程安全问题。
 * @author: gaoyang
 * @date: 2021/10/25 23:06
 */
public class LazyInnerClassSingleton {

    private LazyInnerClassSingleton(){
        if (LazyHolder.LAZY!=null){
            throw new RuntimeException("不允许创建多个实例");
        }
    }

    public static final LazyInnerClassSingleton getInstance(){
        return LazyHolder.LAZY;
    }

    private static class LazyHolder{
        private static final LazyInnerClassSingleton LAZY = new LazyInnerClassSingleton();
    }
}
